package com.dys.test05;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * @className: com.dys.test05.CalendarTest
 * @description: com.dys.test05
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/07/24 下午9:50
 */
public class CalendarTest {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        new CalendarTest().testCalendar();
    }

    public void testCalendar() {
        // Calendar是一个抽象类, GregorianCalendar(子类) extends Calendar(父类)
        Calendar c1 = new GregorianCalendar();
        System.out.println(c1.toString());

        // 常用方法
        // get方法，传入参数：Calendar中定义的常量
        int year = c1.get(Calendar.YEAR);
        System.out.println(year);
        int month = c1.get(Calendar.MONTH);
        System.out.println(month + 1);
        int day = c1.get(Calendar.DATE);
        System.out.println(day);
        int hour = c1.get(Calendar.HOUR);
        System.out.println(hour);
        int minute = c1.get(Calendar.MINUTE);
        System.out.println(minute);
        int second = c1.get(Calendar.SECOND);
        System.out.println(second);
        int dayOfMonth = c1.get(Calendar.DAY_OF_MONTH);
        System.out.println(dayOfMonth);
        int weekOfMonth = c1.get(Calendar.WEEK_OF_MONTH);
        System.out.println(weekOfMonth);

        // set方法： 可以改变Calendar中的内容
        // 应用场景：比如找当前系统时间到前一个月的数据，或者前一年的，可以利用他获取这个范围的startTime和endTime。
        c1.set(Calendar.YEAR, 1999);
        int setYear = c1.get(Calendar.YEAR);
        System.out.println("刚刚设置的年份: " + setYear);
        c1.set(Calendar.MONTH, 12);
        int setMonth = c1.get(Calendar.MONTH);
        System.out.println("刚刚设置的月份: " + setMonth);

        // String--->Calendar:
        // 分解：
        // 1.String--->java.sql.Date:
        java.sql.Date sqlDate = java.sql.Date.valueOf("1999-12-31");
        // 2.java.sql.Date-->Calendar:
        c1.setTime(sqlDate);
        Date time = c1.getTime();
        System.out.println("sql转为Calendar: " + time.toLocaleString());
    }
}
